A peer-to-peer (P2P) computer network exploits diverse connectivity between participants in a network. Cumulative bandwidth of network participants rather than conventional centralized resources provide the core value to a service or application. Peer-to-peer networks are typically used for connecting nodes via largely ad hoc connections. Such networks are useful for many purposes. For example, sharing content files containing audio, video, data, or anything in digital format is very common, and realtime data, such as telephony traffic, is also passed using P2P technology.
Pure P2P systems do not have clients or servers, but only equal peer nodes that simultaneously function as both “clients” and “servers” to the other nodes on the P2P network. This network arrangement model differs from a client-server model where communication is to and from a central server. A typical example for a non P2P file transfer is a file transfer protocol (FTP) server where the client and server programs are distinct, and the clients initiate download/uploads and the servers react to and satisfy requests.
Hybrid P2P systems extend the core value of the described pure P2P systems by adding “relay” server(s) into the system. Relay servers in a hybrid P2P system enable virtual P2P communications where none are otherwise possible. Examples of hybrid enhanced virtual P2P include situations where peers cannot directly communicate due to: protocol, network topology or firewall issues; asynchronous online/offline peers where neither are online simultaneously; peer online awareness; or network address resolution necessary to establish virtual or direct P2P connections. Within a hybrid P2P system, relays are federated such that one peer's home relay may be another peer's foreign relay. Collectively the federated relays make up the relay routing network and in conjunction with the peers make up the overall hybrid P2P system.